package com.example.javabasic.thread.classtwo.activeobject.demo1;

/**
 * 用来创建整体执行结构
 */
public final class ActiveObjectFactory {

    private ActiveObjectFactory(){

    }

    /**
     * 工厂
     * @return
     */
    public static ActiveObjects  createActiveObject(){
        //创建仆人, 用来干活
        Servant servant = new Servant();
        //创建队列, 用于存放任务
        ActivationQueue queue = new ActivationQueue();
        //创建线程  用于队列存取工作
        SchedulerThread schedulerThread = new SchedulerThread(queue);
        //静态代理, 用于生成任务代理 ,整体流程
        ActiveObjectsProxy proxy = new ActiveObjectsProxy(schedulerThread,servant);
        //开始干活
        schedulerThread.start();
        //返回代理
        return proxy;
    }
}
